<meta charset="utf-8"/>
<?php
/*正则表达式
  
   元字符：是一中特殊的字符，用来修饰原子的，不可以单独出现
    * : 表示它前面的原子可以出现0次，1次，或者多次                  {0,}
    + : 表示它前面的原子可以出现1次，或者多次                       {1,}
    ? : 表示它前面的原子只能出现0次或者1次,最少0次，最多1次         {0,1}
    {}: 用来定义自己前面原子出现的次数
        {m}:表示固定，只能出现m次  如｛5｝：只能出现5次
        {m,n}:表示范围，最少出现m次，最多出现n次   如{2,5}: 可出现2次、3次、4次或5次
        {m,}:表示范围，最少出现m次，最多可出现无限次  如{1,}:可出现1到无限次
    . : 默认情况下，表示除了换行符以外的任意一个字符
    ^ : 直接在正则表达式的第一个字符出现，则表示必须以这个正则表达式开始
    $ ：直接在正则表达式的最后一个字符出现，则表示必须以这个正则表达式结束
    | : 表示或的关系，它的优先级是最低的，最后考虑他的功能
    \b: 表示一个边界
    \B：表示一个非边界
    (): 重点
       1、()作为大原子使用
       2、改变优先级，加上()可以提高优先级别
       3、作为子模式使用，正则表达式不先对一个字符串匹配一次，全部匹配作为一个大模式，
          放到数组的第一个元素中，每个()是一个子模式，按顺序放到数组的其他元素中去
       4、可以取消子模式,在()最前面加 ?: 即可取消这个表示()的子模式  如  ?:(dff)
       5、反向引用，可以在模式中直接将子模式取出来，再作为正则表达式模式的一部分
        \1：取出一个子模式    \2：取出2个子模式    \5:取出5个子模式 （注意是单引号还是双引号）
*/


        // $pattern = "/cc2*ddf/";//表示在cc (这里可以有0到多个2) ddf 中匹配
        // $string = "xxxcc22ddfxx";

        // $pattern = "/a2+f/";
        // $string = "a2222f456554656";//a和f之间最少有一个2出现

        // $pattern = "/a2?f/";
        // $string = "a2f456554656";//最少出现0次或者1次


        // $pattern ="/a8{3}f/";//a和f之间只能出现3个8
        // $pattern ="/a8{1,3}f/";//a和f之间8可出现1到3次
        // $pattern ="/a8{3,}f/"; //出现3次以上到无限次
        // $string = "1111aaaaaa888888888888f111111";

        // $pattern = "/a.f/";
        // $string = "33a?f33";//除了换行符以外的任意符号

        // $pattern = "/\bis\b/";
        // $string = "this is island";

        // if(preg_match($pattern,$string)){
        // 	echo '匹配';
        // }else{
        // 	echo '<font color="red">不匹配</font>';
        // }


    //要求匹配出时间，4位数字，加特殊字符，加2位数字，加特殊字符，以此类推  
    // \d表示数字 {4}表示4位数 \W表示特殊字符   "\d{4}\W"就表示 2016-   
    // \s表示空格  \s+表示一个或者多个空格
    // $parttern = "/\d{4}\W\d{2}\W\d{2}\s+\d{2}\W\d{2}\W\d{2}\s+pm/";
    //$parttern = "/(\d{4}\W\d{2}\W\d{2})\s+(\d{2}\W\d{2}\W\d{2})\s+(pm)/"; //子模式
    $parttern = "/(\d{4}\W\d{2}\W\d{2})\s+(\d{2}\W\d{2}\W\d{2})\s+(?:pm)/";//取消子模式
    $string = "today is 2016-11-29  17:11:58  pm";
    if(preg_match($parttern,$string,$arr)){  
    //第三个参数$arr用来装匹配出来的数据
      	echo "匹配成功";
      	echo '<pre>';
      	print_r($arr);
      	echo '</pre>';
    }else{
      	echo '匹配失败';
    }





















